VoiceGuide IVR Software Main Page
Jump to content

Problem With Getnumber Retries And Vbs Validation

Recommended Posts

Hi, I have a problem with the GetNumbers module: I have a simple test script which simply runs the verify VBS and returns either "verify_passed" or "verify_failed", which works okay. (see the VBS in the log snippet below).

 

I have 0 min/max digits set (ie: disabled)

I have 2 retries and 8 seconds between retries.

 

The "paths" are set as follows:

 

on {success} goto [DateThankyou]

on {fail} goto [DateInvalid]

on {timeout 6} goto [DateInvalid]

 

If I enter a number which passes, the "success" path is taken. (okay/expected)

If I enter a hash, the "fail" path is taken. (okay/expected)

If I make no entry, I get 3 plays of the intro wav and 8 second delays, then the fail path. (okay/expected)

If I enter a number which fails validation, then the "failed validation" wav plays. (okay/expected)

If I enter a number which fails validation, then the "failed validation" wav plays. Then a good number which passes, then take the success path. (okay/expected)

If I make 3 bad entries, I get the fail path taken, BUT as the wav specified in the next module begins to play (R12B1.wav) at: 005546.90 this wav is cut-off before it begins and the 3rd "failed validation" wav plays instead, followed by a hangup. IE: the next module is skipped and ignored.

 

EITHER the 3rd replay of the "failed validation" message should be skipped and the fail-path taken, then whatever happens there should run. OR this 3rd message should play, followed by the module taking the fail-path OR there should be a path for "MaxRetries" which is taken instead.

 

System is WinXP Pro, VG4Tapi v5.2.5058.

 

Can you fix or suggest a work around please? Many thanks.

 

(script attached)

 

005546.80  11 timer clear
005546.80  11 rv    lg add [DateGet]{12345}
005546.80  11 eng   run verification
005546.80  11 rv    replace start: ['variable length date checking

d = "$RV[DateGet]"
pindate = "22365"

If d = pindate then
ok = "verify_passed"     'date good
else
ok = "verify_failed"     'date bad
End if

set vg = CreateObject("VoiceGuide.CommandLink")
vg.Run_ResultReturn $RV_LineID, ok
set vg = nothing
]
005546.80  11 rv    ns [PathSysVoice]{C:\Program Files\VoiceGuide\system\voice\}[PathApp]{C:\Program Files\VoiceGuide\}[PathDataVm]{C:\Program Files\VoiceGuide\data\}[PathVgSys]{C:\Program Files\VoiceGuide\system\}[ScriptsPath]{D:\VG\KTRDEV16B\}[ScriptPath]{D:\VG\KTRDEV16B}[$RV_STARTTIME]{28/06/2007 00:55:26}[$RV_DEVICEID]{11}[$RV_CIDNAME]{}[PathApp]{C:\Program Files\VoiceGuide\}[$RV_CIDNUMBER]{20}[$RV_DNIS]{6240}[DNIS]{6240}[DateGet]{12345}[DateGet]{12345}[DateGet]{12345}
005546.80  11 rv    replace end: ['variable length date checking

d = "12345"
pindate = "22365"

If d = pindate then
ok = "verify_passed"     'date good
else
ok = "verify_failed"     'date bad
End if

set vg = CreateObject("VoiceGuide.CommandLink")
vg.Run_ResultReturn 11, ok
set vg = nothing
]
005546.80  11 eng   copy of verification script ran: vbs_11_3_0628005546.vbs
005546.83  11 Run Script waiting. iRunWait=1 (shellid=2392, process=940)
005546.83  11 timer set 1  EV_TIMEOUT_CHECKONSTATE
005546.89  11 cl    Run_ResultReturn >>verify_failed<<
005546.89  11       ScriptEventCode 9220 iLineState=1301
005546.89  11       LsGetNbrsRxDigits EV_UNKNOWN_9220
005546.89  11       getnbr EV_MODGETNBRS_VERIFY_FAIL
005546.90  11       getnbr iCurrReplayCount > maxReplayCount
005546.90  11 timer clear
005546.90  11 state [DateInvalid] Playing
005546.90  11 state [DateInvalid] Playing (R12B1.wav)
005546.90  11 play set playid=65453
005546.92  11       PlaySoundStart ok [R12B1.wav]
005546.92  11 timer clear
005546.92  11 RunModule PLAY end
005546.92  11       getnbr lPlayId=65453
005546.92  11 state [DateGet] Playing (PINDATEFAILED.wav)
005546.92  11 play set playid=65468
005546.94  11       PlaySoundStart ok [PINDATEFAILED.wav]
005546.94  11 timer clear
005548.86  11 play  end current play (playid=65468)
005548.87  11       ScriptEventCode 8001 iLineState=1300
005548.87  11       LsGetNbrsPlayWelcMsg EV_PLAY_FINISHED
005548.87  11 timer set 10  EV_TIMEOUT_HANGUP
005548.87  11 timer set 1  EV_TIMEOUT_GOTOMODULE
005549.90  11 timer fired EV_TIMEOUT_GOTOMODULE
005549.90  11       ScriptEventCode 9002 iLineState=1301
005549.90  11       LsGetNbrsRxDigits EV_TIMEOUT_GOTOMODULE
005549.90  11 rv    lg add [DateInvalid]{}
005549.90  11 rv    ns add [DateInvalid_PathTaken]{timeout}
005549.90  11 timer clear
005549.90  11 rv    lg add [Hangup Time]{28/06/2007 00:55:49}
005549.90  11 state Hanging up call... [Hangup Module]
005549.90  11 RecSoundStop ok
005549.92  11       PlaySoundStop err=0
005549.92  11 timer set 2  EV_TIMEOUT_WAITFORIDLEAFTERLINEDROP
005549.92  11 fnHangupCall end
005549.92  11 tapi  Reply (LineEvReply) ok 66256 0 LineCallState=CONNECTED
005550.08  11 callinfo DEVSPECIFIC
005550.08  11 tapi  callstate IDLE 65896 0 0
005550.08  11 WorkingMode@Idle=
005550.08  11 timer clear
005550.08  11       WriteToLogFiles_CurrScriptOnly start
005550.08           WriteToLogFiles_DoWrite start (D:\VG\KTRDEV16BdoDateTest5)

0doDateTest5.vgs

Share this post


Link to post

...Oh, and just to be clear, the VBS validation code has been edited down to the basics and is not just doing a number equality check (even if the test code posted is) - so I can't just put the "pindate" in the path list as an explicit "{path}" number. I want to use the VBS code and use the GetNumbers retries counter if it can be made to work. Thanks again.

Share this post


Link to post

We'll have a look at this on the v5.x development system.

 

In the meantime the easiest workaround would be to move the validating VBScript to a separate module, and loop back to the get numbers module [DateGet] if the validation is failed (after playing some announcement).

Share this post


Link to post

Please update the VgMulti.exe file on your system with the one attached to this post (v5.2.5060). This attached version should fix the bug which you have encountered.

VgMulti_5.2.5060.zip

Share this post


Link to post

Whoopee! Another 'issue resolved' successfully! Thank you all.

(PS: whats the going rate for software testers these days?) ;-)

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×